<?php

/**
 * Usługa
 * @author Anna Rybka
 *
 */
class Service {
	private $id;
	private $name;
	private $desc;
	private $active;
	private $price;
	private $period;
	private $parts;
	
	public function __construct() {
		$this->parts = array ();
	}
	/**
	 * Metoda ustawia identyfikator usługi
	 * @param $id the $id to set
	 */
	public function setId($id) {
		$this->id = $id;
	}
	
	/**
	 * Metoda zwraca identyfikator usługi
	 * @return identyfikator usługi
	 */
	public function getId() {
		return $this->id;
	}
	
	/**
	 * Metoda ustawia okres w miesiacach ile trwa usługa
	 * @param $period okres w miesiacach ile trwa usługa
	 */
	public function setPeriod($period) {
		$this->period = $period;
	}
	
	/**
	 * Metoda zwraca okres w miesiacach ile trwa usługa
	 * @return okres w miesiacach ile trwa usługa
	 */
	public function getPeriod() {
		return $this->period;
	}
	
	/**
	 * Metoda ustawia cene usługi bez promocji
	 * @param $price  cena usługi bez promocji
	 */
	public function setPrice($price) {
		$this->price = $price;
	}
	
	/**
	 * Metoda ustawia flagę określająca czy usługa jest aktywna
	 * @param $active flaga określająca czy usługa jest aktywna
	 */
	public function setActive($active) {
		$this->active = $active;
	}
	
	/**
	 * Metoda ustawia opis usługi
	 * @param $desc opis usługi
	 */
	public function setDesc($desc) {
		$this->desc = $desc;
	}
	
	/**
	 * Metoda ustawia nazwę usługi
	 * @param $name nazwa usługi
	 */
	public function setName($name) {
		$this->name = $name;
	}
	
	/**
	 * Metoda zwraca cene usługi bez promocji
	 * @return cena usługi bez promocji
	 */
	public function getPrice() {
		return $this->price;
	}
	
	/**
	 * Metoda zwraca flagę określająca czy usługa jest aktywana
	 * @return flaga określająca czy usługa jest aktywana
	 */
	public function isActive() {
		return $this->active;
	}
	
	/**
	 * Metoda zwraca opis usługi
	 * @return opis usługi
	 */
	public function getDesc() {
		return $this->desc;
	}
	
	/**
	 * Metoda zwraca nazwę usługi
	 * @return nazwę usługi
	 */
	public function getName() {
		return $this->name;
	}
	
	/**
	 * Metoda zwraca tablicę części usługi
	 * @return tablica części usługi
	 */
	public function getParts() {
		return $this->parts;
	}
	
	/**
	 * Metoda ustawia tablicę części usługi 
	 * @param $parts tablica części usługi
	 */
	public function setParts($parts) {
		$this->parts = $parts;
	}
	
	/**
	 * Metoda dodaje część usługi
	 */
	public function addPart(ServicePart $part) {
		$this->parts [] = $part;
	}
	
	/**
	 * Metoda usuwa część o danym indeksie
	 */
	public function removePart(int $id) {
		unset ( $this->parts [$id] );
	}
}
?>